package demo02;

/**
 * 设计一个抽象类的鸭子（真鸭子，玩具鸭，木头鸭子....）
 * */
public abstract class Duck {
	//为行为接口申明两个引用变量
	FlyBehavior fly ;
	QuackBehavior quack;
	//构造函数
	public Duck() {
		
	}
	//抽象方法
	public abstract void disPlay();
	
	//委托给行为类
	public void perfromFly(){
		fly.fly();
	}
	public void perfromQuack(){
		quack.quack();
	}
	
	//公共的
	public void swing(){
		System.out.println("所有的鸭子都会swing");
	}
	
	//动态设定行为（方便以后修改这两个行为）
	public void setFly(FlyBehavior fb) {
		fly = fb;
	}
	
	public void setQuack(QuackBehavior qb) {
		quack = qb;
	}
	
	
}
